﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BlogsAPI.Sites.FoursquareSharp
{
    /// <summary>
    /// Note that the API will sometimes return venues that only have a name due to the "venueless" checkin feature. Clients should be prepared to handle this case, although most core venues will be as described below.
    /// </summary>
    /// <see cref="https://developer.foursquare.com/docs/responses/venue.html"/>
    public class Venue
    {
        /// <summary>
        /// идентификатор 
        /// </summary>
        [JsonMapping("id", JsonMapping.MappingType.Primitive)]
        public string Id { get; set; }
        /// <summary>
        /// The best known name for this venue.
        /// </summary>
        [JsonMapping("name", JsonMapping.MappingType.Primitive)]
        public string Name { get; set; }
        /// <summary>
        /// An object containing none, some, or all of twitter, phone, and formattedPhone. All are strings.
        /// </summary>
        [JsonMapping("contact", JsonMapping.MappingType.Class)]
        public Contact Contact { get; set; }
        /// <summary>
        /// An object containing none, some, or all of address (street address), crossStreet, city, state, postalCode, country, lat, lng, and distance. All fields are strings, except for lat, lng, and distance. Distance is measured in meters. 
        /// Some venues have their locations intentionally hidden for privacy reasons (such as private residences). If this is the case, the parameter isFuzzed will be set to true, and the lat/lng parameters will have reduced precision.
        /// </summary>
        [JsonMapping("location", JsonMapping.MappingType.Class)]
        public Location Location { get; set; }
        /// <summary>
        /// Boolean indicating whether the owner of this business has claimed it and verified the information.
        /// </summary>
        [JsonMapping("verified", JsonMapping.MappingType.Primitive)]
        public Boolean Verified { get; set; }
        /// <summary>
        /// Contains checkinsCount (total checkins ever here), usersCount (total users who have ever checked in here), and tipCount (number of tips here).
        /// </summary>
        [JsonMapping("stats", JsonMapping.MappingType.Class)]
        public Stats Stats { get; set; }
        //url
        //hours
        //menu
        //price
        /// <summary>
        /// If v >= 20120121, a dictionary containing count and items array of specials at this venue. Otherwise Optional If present, an array, possibly empty, of specials at this venue.
        /// </summary>
        [JsonMapping("specials", JsonMapping.MappingType.Class)]
        public Counter Specials { get; set; }
        /// <summary>
        /// Optional Information about who is here now. If present, there is always a count, the number of people here. If viewing details and there is a logged-in user, there is also a groups field with friends and others as types.
        /// </summary>
        [JsonMapping("hereNow", JsonMapping.MappingType.Class)]
        public Counter HereNow { get; set; }

        [JsonMapping("hereNow", JsonMapping.MappingType.Primitive)]
        public string ReferralId { get; set; }
    }
}
